package mx.com.initzero.ecommerce.dao.impl;

import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

import mx.com.initzero.ecommerce.dao.DireccionDao;
import mx.com.initzero.ecommerce.dto.Direccion;

@Repository
public class DireccionDaoImpl extends JdbcDaoSupport implements DireccionDao{

	private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
	
	@Autowired
	public DireccionDaoImpl(DataSource dataSource) {
		namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
		setDataSource(dataSource);
		JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource); 
	}
	
	@Override
	public int insertDireccion(Direccion direccion) {
		// TODO Auto-generated method stub
		final String query="insert into direccion( "
				+ "tipodireccion_idTipo, calle, colonia, municipio, C.P, estado, No.Ext, No.Int, asentamiento, pais) "
				+ "values(?,?,?,?,?,?,?,?,?,?)";
		System.out.println("intento insert");
		
		SimpleJdbcInsert insert=new SimpleJdbcInsert(getDataSource());
		insert.withTableName("direccion");
		insert.usingGeneratedKeyColumns("Id_direccion");
		
		Map<String, Object> parameters = new HashMap<String, Object>(2);
	    parameters.put("tipodireccion_idTipo", direccion.getTipodireccion_idTipo());
	    parameters.put("calle", direccion.getCalle());
	    parameters.put("colonia", direccion.getColonia());
	    parameters.put("municipio", direccion.getMunicicpio());
	    parameters.put("C.P", direccion.getCP());
	    parameters.put("estado", direccion.getEstado());
	    parameters.put("No.Ext", direccion.getNoExt());
	    parameters.put("No.Int", direccion.getNoInt());
	    parameters.put("asentamiento", direccion.getAsentamiento());
	    parameters.put("pais", direccion.getPais());
	   
	    Number idDireccion = insert.executeAndReturnKey(parameters);
		return idDireccion.intValue();
	}

}
